home *** CD-ROM | disk | FTP | other *** search
/ Inside Mac Games Volume 5 #3 / IMG 46 Vol 5-3.iso / More Goodies / More For Your Game / Dark Forces / Documentation ƒ / DF Editors' Guide / INF Guide < prev    next >
Text File  |  1996-08-03  |  37KB  |  1,259 lines

  1.  
  2.  
  3. [Best viewed with COURIER-10]
  4.  
  5.  
  6.  
  7.               …ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕª
  8.               ∫     DARK FORCES INF FILE FORMAL DESCRIPTION     ∫
  9.               ∫                   version 3                     ∫
  10.               ∫  by Jereth Kok (kokjm@stmichaels.vic.edu.au)    ∫
  11.               "ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕº
  12.         
  13.         
  14.  
  15. Acknowledgements:
  16. -----------------
  17. LucasArts Entertainment Company --      creators of Dark Forces
  18. Yves Borckmans                  --      creator of DFUSE & WDFUSE
  19. Ben & Pat McBride               --      makers of the DFUSE tutorials
  20.  
  21.  
  22. Introduction
  23. ------------
  24. This file (INFFILE.TXT) gives an formal description of all of the functions 
  25. of the .INF file, which controls the dynamics in a level. Beginners should 
  26. use it as a learning tool, while people experienced with editing levels can 
  27. use it as a reference.
  28.  
  29. I assume that anyone reading this file is a user of Yves Borckmans' DFUSE  
  30. of WDFUSE. 
  31.  
  32. Note: Anything significant which I've added in version 2 is marked by [NEW]
  33.  
  34. Note: Anything significant which I've added in version 3 is marked by [NEW3]
  35.  
  36.  
  37. CONTENTS
  38. --------
  39. 1. INF file overview
  40. 2. Sequence variables
  41. 3. Elevators
  42. 4. Triggers
  43. 5. Teleporter chutes
  44. 6. [NEW] item: level
  45. 7. Messages
  46. 8. Miscellaneous
  47.  
  48.  
  49. 1. INF (INFormation) file overview
  50. ----------------------------------
  51. The INF file contains information on the dynamics of a level. It brings to
  52. life the static geometry set by a LEV file. This is similar to DOOM's sector
  53. tags, linedef actions, and some sector flags that pulsate the light and scroll
  54. walls etc., but much more powerful because the INF language allows you to 
  55. customize everything.
  56.  
  57. [NEW] Information in the INF file is defined by "items". The number of items 
  58. is stated at the top of the file after the magic, version and LEVELNAME. This
  59. must be updated each time an item is added. There are three types of items - 
  60. sector, line, and level. Here is how they are entered as an item in the INF 
  61. file.
  62.  
  63. | item: sector  name: [sector name]
  64. |       seq
  65. |               ....
  66. |       seqend
  67.  
  68. | item: line    name: [sector name]     num: [wall no.]
  69. |       seq
  70. |               ....
  71. |       seqend
  72.  
  73. | item: level
  74. |       seq
  75. |               ....
  76. |       seqend
  77.  
  78.  
  79. As you can see, all three types of items have a sequence delimited by  "seq"
  80. "seqend", same as in the .O file. The sequence contains all of the 
  81. information on that particular sector or line. 
  82.  
  83. [NEW] The three class types in INF files are elevators, triggers and 
  84. the teleporter chute. Sectors can be used as all three while lines can only
  85. be used as triggers (obviously!)
  86.  
  87. More than one "class" can be designated to a sector. i.e. you can have a 
  88. sector which is more than one types of elevator or a sector that is both an 
  89. elevator and a trigger. All classes are placed between the same seq and 
  90. seqend of the item.
  91.  
  92.  
  93.  
  94.  
  95. 2. SEQUENCE VARIABLES
  96. ---------------------
  97.  
  98. Firstly, the possible variables that can be included in the sequence of 
  99. elevators and triggers must be understood. Note that all of these variables 
  100. may not be used in every elevator or trigger. That is, a particular elevator 
  101. or trigger may only contain a few of these variables.
  102.  
  103.  
  104.  
  105. The variables:
  106. ⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
  107. ≥       stop                    (elevators)             ≥
  108. ≥       master                  (elevators)             ≥
  109. ≥       event_mask              (elevators/triggers)    ≥
  110. ≥       event                   (triggers)              ≥
  111. ≥       entity_mask             (triggers)              ≥
  112. ≥       speed                   (elevators)             ≥
  113. ≥       center                  (elevators)             ≥
  114. ≥       angle                   (elevators)             ≥
  115. ≥       key                     (elevators)             ≥
  116. ≥       client                  (triggers)              ≥    
  117. ≥       slave                   (elevators)             ≥
  118. ≥[NEW3] flags                   (elevators)             ≥
  119. ¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ
  120.  
  121. Here are descriptions and explanations on the usage of each of the variables.
  122. Anything in square brackets - [] - need to be replaced with appropriate
  123. values.
  124.  
  125.  
  126. stop
  127. ----
  128. description:
  129.  
  130. A stop is a value that an elevator can arrive at. This value varies depending
  131. on the type of elevator, and can be floor altitude, ceiling altitude, 
  132. ambience, degrees...... There are two values to be given.
  133.  
  134. [NEW3] The first value can be given in three ways:
  135. | [num]         --      absolute stop
  136. | @[num]        --      relative stop 
  137. | [sectorname]  --      equal the value of the sector [sectorname]
  138.                         (eg. for an elevator move_floor it will move to the
  139.                          same floor altitude as sector [sectorname])
  140.  
  141. [NEW3] The second value can be given in 4 ways:
  142. | [time]        --      time in sec that elevator remains at stop
  143. | hold          --      elevator will remain at stop indefinitely
  144. | terminate     --      elevator will stay at the stop permanently 
  145. | complete      --      mission will be complete when elev arrives at stop
  146.  
  147.  
  148. usage:
  149.  
  150. | stop: [value1] [value2]
  151.  
  152.  
  153. master
  154. ------
  155. description:
  156.  
  157. A master value can either be on or off. If master is on, the elevator will 
  158. function. If master is off, the elevator won't function, even if the
  159. event_mask (more on this later!) is carried out or a message (more on this
  160. later too) is sent, telling it to move. There's no point setting master: on
  161. in the INF file, though, because elevators are always on be default.
  162.  
  163. usage:
  164.  
  165. | master: on/off
  166.  
  167.  
  168. event_mask
  169. ----------
  170. description:
  171.  
  172. Event_mask is a value which determines under what conditions an elevator or
  173. trigger will function. For an elevator, the conditions will move it 
  174. to its next stop. For a trigger, the conditions determine how it can be
  175. triggered. These are the possible values:
  176.  
  177. ⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
  178. ≥ 0       Nothing                                                       ≥    
  179. ≥ 1       Cross line from front side                                    ≥
  180. ≥ 2       Cross line from back side                                     ≥
  181. ≥ 4       Enter sector                                                  ≥
  182. ≥ 8       Leave sector                                                  ≥
  183. ≥ 16      Nudge line from front side / Nudge sector from inside         ≥
  184. ≥ 32      Nudge line from back side /  Nudge sector from outside        ≥
  185. ≥ 64      Explosion                                                     ≥ 
  186. ≥ 256     Shoot at line (see entity_mask)                               ≥
  187. ≥ 512     Land on floor of sector                                       ≥
  188. ≥                                                                       ≥
  189. ≥ Custom values (see event:)    Set off by a trigger with an event:     ≥
  190. ¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ
  191.  
  192. If you want a sector or line to have more than one of these values, then add
  193. the desired values up. For example, an elevator that can be operated by 
  194. entering the sector or nudging in from inside has event_mask: 20 (16 + 4).
  195.  
  196. usage:
  197.  
  198. | event_mask: [value]
  199.  
  200.  
  201. event
  202. -----
  203. description:
  204.  
  205. Event creates a custom event value. A trigger can be given a custom event
  206. value, and any elevator with this event value as its event_mask value will
  207. operate when the trigger is triggered. The custom event value has to be a
  208. power of 2 that is 65536 or greater (65536, 131072, 262144, 524288, 1048576
  209. and so on).
  210.  
  211. This is needed with multi-class elevators where each class is controlled by 
  212. a separate switch. For example in the Research Facility (level 4), the sector
  213. called "Corecat" (spins around the Phrik metal) is two classes of elevator - 
  214. elevator move_fc and elevator morph_spin2. Two switches control these classes
  215. individually. If the "event" variable was not used, both switches would move
  216. both classes of elevator to its next stop at the same time. Utilising the
  217. "event" variable, it is made possible to have one switch control the spinning 
  218. and the other control the moving floor/ceiling.
  219.  
  220.  
  221. usage:
  222.  
  223. | event: [value]
  224.  
  225.  
  226. entity_mask
  227. -----------
  228. description:
  229.  
  230. Entity_mask defines the entity that triggers a trigger. The default
  231. is the player.
  232.  
  233. Here are the values that are used in the original 14 levels.
  234.  
  235. ⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
  236. ≥ 1             an enemy (eg. an enemy crossing a line trigger)             ≥
  237. ≥ 8             one of your weapons (eg. a "shoot" switch)                  ≥
  238. ≥ * or -1       usually used with event_mask: 272 - you can shoot at the    ≥
  239. ≥               trigger and nudge it                                        ≥
  240. ≥ 2147483656    All the bits set except 8                                   ≥
  241. ¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ
  242. [NEW] In TESTBASE.INF entity_mask is applied to an elevator. This does nothing
  243. and is probably an error made by the programmers.
  244.  
  245.  
  246. usage:
  247.  
  248. | entity_mask: [value]
  249.  
  250.  
  251.  
  252. speed
  253. -----
  254. description:
  255.  
  256. Speed is a value that determines the speed of an elevator.
  257. Speed: 0 is instantaneous.
  258.  
  259. usage:
  260.  
  261. | speed: [value]
  262.  
  263.  
  264. center
  265. ------
  266. description:
  267.  
  268. Center defines the X and Z coordinates of the center of revolution of a
  269. spinning sector.
  270.  
  271. usage:
  272.  
  273. | center: [x coord] [z coord]
  274.  
  275.  
  276. angle
  277. -----
  278. description:
  279.  
  280. Angle defines the angle in degrees of a scrolling wall, floor or ceiling
  281. texture. Angle also defines the angle in degrees of a horizontally moving
  282. sector. For scrolling walls, angle: 0 is down. For scrolling floors, scrolling
  283. ceilings and moving sectors, angle: 0 is north.
  284.  
  285. usage:
  286.  
  287. | angle: [value in degrees]
  288.  
  289.  
  290. key
  291. ---
  292. description:
  293.  
  294. The value of key defines which key is needed to operate an elevator. Key is
  295. optional, of course. Just leave it out if you don't want your elevator to
  296. need a key to operate.
  297.  
  298. usage:
  299.  
  300. | key: red/blue/yellow
  301.  
  302.  
  303. client
  304. ------
  305. description:
  306.  
  307. Client is used with triggers only. It defines which sector the trigger
  308. affects.
  309.  
  310. usage:
  311.  
  312. | client: [client sector name]
  313.  
  314.  
  315. slave
  316. -----
  317. description:
  318.  
  319. Slave is optional and is used with elevators only. Slave determines which
  320. sector is a slave of the elevator it is applied to. The slave copies whatever
  321. the elevator does.
  322.  
  323. usage:
  324.  
  325. | slave: [slave sector name]
  326.  
  327.  
  328. [NEW3] flags
  329. ------------
  330. description:
  331.  
  332. Flags, as far as I know, determine whether or not the player moves with a 
  333. morphing or horizontally scrolling elevator.
  334.  
  335. When no flag value is given the following defaults apply:
  336.         elev scroll_floor               player moves with floor tx
  337.         elev scroll_ceiling             player doesn't move
  338.         elev morph_move1                player doesn't move
  339.         elev morph_move2                player moves with sector
  340.         elev morph_spin1                player doesn't spin
  341.         elev morph_spin2                player spins with sector
  342.         elev rotate_wall                player doesn't spin
  343.  
  344. effects of flags on player:
  345. flags: 0    --    [flr alt] NO move / spin      [2nd alt] NO move / spin
  346. flags: 1    --    [flr alt] move / spin         [2nd alt] NO move / spin
  347. flags: 2    --    [flr alt] NO move / spin      [2nd alt] move / spin
  348. flags: 7    --    [flr alt] move / spin         [2nd alt] move / spin
  349.  
  350. So, you could have something like the shuttle in the Detention Center level
  351. (elev morph_move2). Set it with  flags: 2  and you'll move ON the shuttle,
  352. which is a 2nd alt, but won't move on the floor underneath it.
  353.  
  354. In some places in the original levels, flags is set on vertically moving
  355. elevators like move_floor and move_fc. I'm not sure whether this is a 
  356. mistake, or if flags do something different here.
  357.  
  358.  
  359. usage: 
  360.  
  361. | flags: 0 / 1 / 2 / 7
  362.  
  363.  
  364.  
  365.  
  366. 3. ELEVATORS
  367. ------------
  368.  
  369. Here are the elevators:
  370.  
  371. [NEW3] I've grouped these into sector elevators and wall elevators
  372. respectively. Wall elevators affect walls of a sector with certain bits 
  373. set to flag 1.
  374. ⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
  375. ≥ elevator change_light          ≥
  376. ≥ elevator door                  ≥
  377. ≥ elevator door_mid              ≥
  378. ≥ elevator basic                 ≥
  379. ≥ elevator inv                   ≥
  380. ≥ elevator move_ceiling          ≥
  381. ≥ elevator move_floor            ≥
  382. ≥ elevator move_fc               ≥
  383. ≥ elevator scroll_ceiling        ≥
  384. ≥ elevator scroll_floor          ≥
  385. ≥                                ≥
  386. ≥ elevator change_wall_light     ≥
  387. ≥ elevator morph_move1           ≥
  388. ≥ elevator morph_move2           ≥
  389. ≥ elevator morph_spin1           ≥
  390. ≥ elevator morph_spin2           ≥
  391. ≥ elevator rotate_wall           ≥
  392. ≥ elevator scroll_wall           ≥
  393. ¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ
  394.  
  395. Here is a description of each elevator class and how to use it. The variables
  396. that are needed for each class are shown. Any variables in {} are optional.
  397.  
  398. Note that anything in square brackets - [] - must be replaced with
  399. appropriate values.
  400.  
  401. There can always be an unlimited amount of stops (except for elevator door 
  402. and elevator door_mid which don't require stops). The stop values for
  403. each type of elevator are explained.
  404.  
  405.  
  406.  
  407. elevator change_light 
  408. ---------------------
  409. description: Changing light level (ambience) in sector.
  410.                              
  411.              Stop values are sector ambience.
  412.  
  413.  
  414. usage: 
  415.  
  416. |                        class: elevator change_light
  417. |                        event_mask: 
  418. |                        speed:       
  419. |                        {slave: }
  420. |                        {master: }
  421. |                        stop: 
  422. |                        stop:
  423. |                        ....
  424.  
  425.  
  426. elevator door
  427. -------------
  428. description: Normal door. Note, that it is easier to just use flag 1 bit 2
  429.              on a sector for a normal door. Elevator door is only really
  430.              needed for a key door.
  431.  
  432.              Make sure that a sector with this elevator has the
  433.              ceiling altitude of the door when it is OPEN!!!
  434.  
  435.  
  436. usage:
  437.                         
  438. |                        class: elevator door
  439. |                        {master: }
  440. |                        {key: }
  441.  
  442.  
  443. elevator door_mid
  444. -----------------
  445. description: A 2 part door (opens upwards and downwards). Information for
  446.              the top and bottom parts are specified individually.
  447.              
  448.              "addon: 0" is the top part
  449.              "addon: 1" is the bottom part
  450.  
  451.              The floor and ceiling altitudes of the sector must be of
  452.              the door when it is OPEN. The door will split halfway between.
  453.  
  454.  
  455. usage:
  456.                         
  457. |                        class: elevator door_mid
  458. |                        addon: 0
  459. |                        speed:
  460. |                        {key: }
  461. |                        {master: }
  462. |                        addon: 1
  463. |                        speed: 
  464. |                        {key: }
  465. |                        {master: }
  466.  
  467.  
  468.  
  469. elevator basic
  470. --------------
  471. description: floor that moves up and down.
  472.  
  473.              Stop values are the altitude of the floor.
  474.  
  475. usage:
  476.                         
  477. |                        class: elevator basic
  478. |                        event_mask: 
  479. |                        speed: 
  480. |                        {key: }
  481. |                        {slave: }
  482. |                        {master: }
  483. |                        stop: 
  484. |                        stop: 
  485. |                        ....
  486.  
  487.  
  488. elevator inv 
  489. ------------
  490. description: ceiling that moves up and down. Often used for making doors.
  491.  
  492.              Stop values are the altitude of the ceiling.
  493.  
  494. usage: 
  495.  
  496. |                        class: elevator inv
  497. |                        event_mask: 
  498. |                        speed: 
  499. |                        {key: }
  500. |                        {slave: }
  501. |                        {master: }
  502. |                        stop: 
  503. |                        stop: 
  504. |                        ....
  505.                         
  506.  
  507. elevator move_ceiling 
  508. ---------------------
  509. description: Ceiling that moves up and down. In fact, the same as
  510.              elevator inv.
  511.  
  512.              Stop values are the altitude of the ceiling.
  513.  
  514.  
  515. usage: 
  516.                         
  517. |                        class: elevator move_ceiling
  518. |                        event_mask: 
  519. |                        speed: 
  520. |                        {key: }
  521. |                        {slave: }
  522. |                        {master: }
  523. |                        stop: 
  524. |                        stop: 
  525. |                        ....
  526.  
  527.  
  528. elevator move_floor 
  529. -------------------
  530. description: floor that moves up and down. In fact, the same as elevator
  531.              basic.
  532.  
  533.              Stop values are the altitude of the floor.
  534.  
  535.  
  536. usage: 
  537.                         
  538. |                        class: elevator move_floor
  539. |                        event_mask: 
  540. |                        speed: 
  541. |                        {key: }
  542. |                        {slave: }
  543. |                        {master: }
  544. |                        stop: 
  545. |                        stop: 
  546. |                        ....
  547.  
  548.  
  549. elevator move_fc 
  550. ----------------
  551. description: Floor and ceiling that move up and down together.
  552.  
  553.              Stop values are the altitude of the floor.
  554.  
  555. usage: 
  556.                         
  557. |                        class: elevator move_fc
  558. |                        event_mask: 
  559. |                        speed: 
  560. |                        {key: }
  561. |                        {slave: }
  562. |                        {master: }
  563. |                        stop: 
  564. |                        stop: 
  565. |                        ....
  566.  
  567.  
  568. elevator scroll_ceiling 
  569. -----------------------
  570. description: ceiling texture scrolls
  571.  
  572.              Stop values are texture offsets.
  573.  
  574. usage: 
  575.                         
  576. |                        class: elevator scroll_ceiling
  577. |                        event_mask: 
  578. |                        speed: 
  579. |                        angle: 
  580. |                        {flags: }
  581. |                        {slave: }
  582. |                        {master: }
  583. |                        {stop: }
  584. |                        {stop: }
  585. |                        ....
  586.  
  587.  
  588. elevator scroll_floor
  589. ---------------------
  590. description: floor texture scrolls. Player moves with it by default 
  591.              [see FLAGS] 
  592.  
  593.              Stop values are texture offsets.
  594.  
  595.  
  596. usage: 
  597.                         
  598. |                        class: elevator scroll_floor
  599. |                        event_mask: 
  600. |                        speed: 
  601. |                        angle: 
  602. |                        {flags: }
  603. |                        {slave: }
  604. |                        {master: }
  605. |                        {stop: }
  606. |                        {stop: }
  607. |                        ....
  608.  
  609.  
  610. elevator change_wall_light 
  611. --------------------------
  612. description: Any walls in the sector with flag 1 bit 8 (allow change wall 
  613.              light) will change ambience.
  614.  
  615.              Stops values are wall light.
  616.  
  617. usage:
  618.  
  619. |                        class: elevator change_wall_light
  620. |                        event_mask: 
  621. |                        speed: 
  622. |                        {slave: }
  623. |                        {master: }
  624. |                        stop:
  625. |                        stop:
  626. |                        ....
  627.  
  628.  
  629. elevator morph_move1 
  630. --------------------
  631. description: Any walls in the sector with flag 1 bit 32 (wall morph with
  632.              sector) will move.
  633.  
  634.              Stop values are distances on the X-Z (horizontal) plane.
  635.  
  636. usage:
  637.  
  638. |                        class: elevator morph_move1
  639. |                        event_mask: 
  640. |                        speed: 
  641. |                        angle: 
  642. |                        {flags: }
  643. |                        {key: }
  644. |                        {slave: }
  645. |                        {master: }
  646. |                        stop: 
  647. |                        stop: 
  648. |                        ....
  649.                 
  650.  
  651. elevator morph_move2 
  652. --------------------
  653. description: Any walls in the sector with flag 1 bit 32 (wall morph with
  654.              sector) will move. The player will also move relative to the 
  655.              walls by default. [see FLAGS]
  656.  
  657.              Stop values are distances on the X-Z (horizontal) plane.
  658.  
  659.  
  660. usage: 
  661.                         
  662. |                        class: elevator morph_move2
  663. |                        event_mask: 
  664. |                        speed: 
  665. |                        angle: 
  666. |                        {flags: }
  667. |                        {key: }
  668. |                        {slave: }
  669. |                        {master: }
  670. |                        stop: 
  671. |                        stop: 
  672. |                        ....
  673.  
  674.  
  675. elevator morph_spin1 
  676. --------------------
  677. description: Any walls in the sector with flag 1 bit 32 (wall morph with
  678.              sector) will spin. 
  679.  
  680.              Stop values are angles in degrees.
  681.  
  682.  
  683. usage:
  684.                         
  685. |                        class: elevator morph_spin1
  686. |                        event_mask: 
  687. |                        speed: 
  688. |                        center: 
  689. |                        {flags: }
  690. |                        {key: }
  691. |                        {slave: }
  692. |                        {master: }
  693. |                        {stop: }
  694. |                        {stop: }
  695. |                        ....
  696.  
  697.  
  698. elevator morph_spin2 
  699. --------------------
  700. description: Any walls in the sector with flag 1 bit 32 (wall morph with
  701.              sector) will spin. The player will also spin relative to the 
  702.              walls by default. [see FLAGS]
  703.  
  704.              Stop values are angles in degrees.
  705.  
  706.  
  707. usage: 
  708.                         
  709. |                        class: elevator morph_spin2
  710. |                        event_mask: 
  711. |                        speed: 
  712. |                        center: 
  713. |                        {flags: }
  714. |                        {key: }
  715. |                        {slave: }
  716. |                        {master: }
  717. |                        {stop: }
  718. |                        {stop: }
  719. |                        ....
  720.  
  721.  
  722. elevator rotate_wall
  723. --------------------
  724. description: Any walls in the sector with flag 1 bit 32 (wall morph with
  725.              sector) will spin.
  726.  
  727.              Stop values are angles in degrees.
  728.  
  729.  
  730. usage: 
  731.                         
  732. |                        class: elevator rotate_wall
  733. |                        event_mask: 
  734. |                        speed: 
  735. |                        center: 
  736. |                        {flags: }
  737. |                        {key: }
  738. |                        {slave: }
  739. |                        {master: }
  740. |                        {stop: }
  741. |                        {stop: }
  742. |                        ....
  743.  
  744.  
  745. elevator scroll_wall
  746. --------------------
  747. description: Texture(s) of any walls in the sector with flag 1 bit 64/128/
  748.              256/512 (allow scroll mid/top/bot/sign texture) will scroll.
  749.  
  750.              Stop values are texture offsets.
  751.  
  752. usage: 
  753.                         
  754. |                        class: elevator scroll_wall
  755. |                        event_mask: 
  756. |                        speed: 
  757. |                        angle: 
  758. |                        {slave: }
  759. |                        {master: }
  760. |                        {stop: }
  761. |                        {stop: }
  762. |                        ....
  763.  
  764.  
  765. Just a couple more things - for several of the vertically moving elevators, 
  766. it may be necessary to anchor wall textures to prevent unnatural texture 
  767. movement (flag 1 bit 16 / 4096)
  768.  
  769. The PLAYER will move with an "elevator morph_move2" or "elevator morph_spin2",
  770. or if flags are set accordingly, but the floor texture won't scroll, so it 
  771. looks unnatural. This is what I suggest - for moving sectors add a 
  772. "elevator scroll_floor" with exactly the same stops, angle and speed as the 
  773. moving sector, and the floor texture will move together with the 
  774. sector. For spinning sectors all you can do is add a single coloured 
  775. texture so you can't see the texture movement. The best texture for this 
  776. (used by LucasArts too!) is ZPGRYFIL.BM.
  777.  
  778.  
  779.  
  780. 4. TRIGGERS
  781. -----------
  782.  
  783. Here are the triggers:
  784. ⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
  785. ≥ trigger standard    ≥
  786. ≥ trigger             ≥
  787. ≥ trigger switch1     ≥
  788. ≥ trigger single      ≥
  789. ≥ trigger toggle      ≥
  790. ¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ
  791.  
  792. Here is a description of each trigger class and how to use it. The variables
  793. that are required by each class are shown. Any variables in {} are optional.
  794.  
  795. Note that anything in square brackets - [] - must be replaced with
  796. appropriate values. 
  797.  
  798. All triggers can have unlimited clients.
  799.  
  800. Note: If a specific message is not sent from a trigger to its client, then
  801.       the client will just move to its next stop.
  802.  
  803.  
  804. trigger standard
  805. ----------------
  806. description: This can be applied to a sector (entering, leaving or nudging it)
  807.              or a line (crossing it or nudging it). 
  808.  
  809. usage:
  810.         
  811. |                        class: trigger standard
  812. |                        event_mask: 
  813. |                        {entity_mask: }
  814. |                        client: 
  815. |                        ....
  816.  
  817.  
  818.  
  819. trigger
  820. -------
  821. description: exactly the same as trigger standard as far as I know.
  822.  
  823. usage:
  824.  
  825. |                        class: trigger      
  826. |                        event_mask: 
  827. |                        {entity_mask: }
  828. |                        client: 
  829. |                        ....
  830.  
  831.  
  832. trigger switch1
  833. ---------------
  834. description: this is used specifically for switch triggers. Remember, the wall
  835.              containing the switch must have a sign which is a switch texture.
  836.  
  837.  
  838. usage:                        
  839.                         
  840. |                        class: trigger switch1 
  841. |                        event_mask: 
  842. |                        {entity_mask: }
  843. |                        client: 
  844. |                        ....
  845.  
  846.  
  847. trigger single
  848. --------------
  849. description: this is a trigger that can only be used once. Can only be
  850.              applied to lines - sectors will be able to be triggered more  
  851.              than once! 
  852.  
  853. usage:
  854.  
  855. |                        class: trigger single     
  856. |                        client: 
  857. |                        event_mask: 
  858. |                        {entity_mask: }
  859. |                        ....
  860.  
  861.  
  862. trigger toggle
  863. --------------
  864. description: this toggles an elevator between stops. Therefore, the client
  865.              sector MUST have more than one stop. 
  866.  
  867. usage: 
  868.  
  869. |                        class: trigger toggle
  870. |                        event_mask: 
  871. |                        {entity_mask: }
  872. |                        client: 
  873. |                        ....
  874.  
  875.  
  876.  
  877. 5. TELEPORTER CHUTES
  878. --------------------
  879. Teleporter chutes are a special third element of the INF file. They are not
  880. elevators or triggers. Their function is to teleport the player to another 
  881. sector.
  882.  
  883.  
  884. NOTE:
  885.  
  886. Dark Forces teleporter chutes do not have the same intention as the
  887. teleporters in DOOM. In DOOM, teleporters are deliberate and are just another
  888. fun aspect of a level. In Dark Forces, they are not intended to even be
  889. noticed. They are intended to make it look like the player has just 
  890. fallen through a chute into a layer below, for example, in the Robotics
  891. Facility where you fall into the gas room, and Jabba's Ship where you
  892. fall into the area where you rescue Jan. These cases could only be 
  893. accomplished through teleporter chutes because the other method (using
  894. a same sector in both layers) would mean making double adjoin/mirror/walks
  895. for the walls of that sector - something not possible.
  896.  
  897. Note that the teleporter chute and its target MUST occupy the same physical
  898. space although they may have different floor and ceiling altitudes. Otherwise,
  899. it may be possible to teleport outside of a sector.
  900.  
  901. [NEW] Yves Borckmans told me of a method for making REAL teleporters, like 
  902. in DOOM. The "teleporter pad" teleports you up to a sector which is a 
  903. super-fast elevator scroll_floor. Before you notice anything, you are 
  904. scrolled over the distance and dumped through another teleporter chute into 
  905. the "teleporter destination"! Now if we could just find out how to include
  906. some special fx.....
  907.  
  908. usage:
  909.                         
  910. |               class: teleporter chute
  911. |               target: [target sector's name]
  912.  
  913.  
  914. 6. [NEW] ITEM: LEVEL
  915. --------------------
  916. This is used to play entire level ambient sounds. Quite useless, but it 
  917. might be needed if you've got a level with lots of water or wind and it saves 
  918. you from putting lots of sound objects all over the place.
  919.  
  920. This is never successfully used in the original levels. There is, however, a 
  921. failed attempt in EXECUTOR.INF which is where I found out about it from.
  922.  
  923. usage:
  924.  
  925. | item: level
  926. |       seq
  927. |                amb_sound: [voc file]
  928. |       seqend
  929.  
  930.  
  931.  
  932. 7. MESSAGES
  933. -----------
  934. [NEW3]
  935. Messages are sent from triggers and elevators to other triggers, elevators,
  936. and in some cases just regular sectors and lines. (except message: lights, 
  937. which is sent to the system) They do various things to their recipients. 
  938. Messages are placed in the sequence of elevators and triggers.
  939.  
  940. They all have this general syntax:
  941.  
  942. | message: [stop] [sectorname[(wallnum)]] [msg] [parameters]
  943.  
  944.  
  945. [stop]  is used when a message is sent from an elevator. It is sent when the
  946.         elevator ARRIVES at that stop.
  947.  
  948. [sectorname[(wallnum)]]  This is the reciever of a message. (wallnum) is for
  949.                          if the reciever is a wall. Omit if reciever is a 
  950.                          sector or SYSTEM.
  951.  
  952. [msg]           The message
  953.  
  954. [parameters]    Parameters specific to the type of message.
  955.  
  956.  
  957.  
  958.  
  959. Here are the messages:
  960. ⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
  961. ≥ complete              ≥
  962. ≥ done                  ≥
  963. ≥ goto_stop             ≥
  964. ≥ next_stop             ≥
  965. ≥ prev_stop             ≥
  966. ≥ master_on             ≥
  967. ≥ master_off            ≥
  968. ≥ m_trigger             ≥
  969. ≥ clear_bits            ≥
  970. ≥ set_bits              ≥
  971. ≥ wakeup                ≥
  972. ≥ [NEW] lights          ≥
  973. ¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ
  974. [NEW] Note: in FUELSTAT.INF there is a "message: trigger". This does not do
  975. anything if removed, so I think it's not really a message and was an error
  976. made by the programmers.
  977.  
  978. Note that for messages that are sent from triggers to elevators, the client of
  979. the trigger must first be specified (obviously). 
  980.  
  981. When messages are sent from an elevator, they are sent when it ARRIVES at a
  982. stop. Therefore, messages can't be sent from stop 0 at the start of a level.
  983.  
  984.  
  985. A description of each message and its parameters follows.
  986.  
  987.  
  988.  
  989. complete
  990. --------
  991. Description: Tells the GOL file that a trigger goal has been completed.
  992.              Also moves recipient elevator to its next stop.
  993.  
  994.              Sent from a trigger or an elevator.
  995.              
  996.              Sent to an elevator (preferably to your "complete" elevator so
  997.              you don't have to send another message: next_stop to it as well.)
  998.              
  999.  
  1000. Parameters:
  1001.  
  1002. [num]   --      refers to the "TRIG: [num]" in the GOL file. The corresponding 
  1003.                 goal in your PDA will then be shown to be complete (if your
  1004.                 ANIM is done correctly, that is!!!)
  1005.  
  1006.  
  1007. done
  1008. ----
  1009. Description: Tells a switch that it is ready to be used again (UNLESS it is 
  1010.              a trigger single).
  1011.  
  1012.              Sent from an elevator.
  1013.  
  1014.              Sent to a line trigger.
  1015.  
  1016.  
  1017. Parameters: none
  1018.  
  1019.  
  1020.  
  1021. goto_stop
  1022. ---------
  1023. Description: Sends an elevator to a specified stop.
  1024.  
  1025.              Sent from a trigger or an elevator.
  1026.  
  1027.              Sent to an elevator.
  1028.  
  1029.  
  1030. Parameters:
  1031.  
  1032. [num]   --      Stop number to send elevator to.
  1033.  
  1034.  
  1035.  
  1036. next_stop
  1037. ---------
  1038. Description:  Sends an elevator to its next stop.
  1039.  
  1040.               Sent from an elevator or trigger.
  1041.  
  1042.               Sent to an elevator.
  1043.  
  1044.  
  1045. Parameters: none
  1046.  
  1047.  
  1048.  
  1049. prev_stop
  1050. ---------
  1051. Description: Sends an elevator to its previous stop.
  1052.  
  1053.              Sent from an elevator or trigger.
  1054.  
  1055.              Sent to an elevator.
  1056.  
  1057.  
  1058. Parameters: none
  1059.  
  1060.  
  1061.  
  1062. master_on
  1063. ---------
  1064. description: Turns an elevator's master on.
  1065.              [NEW] This message also turns on all generators in the recipient
  1066.              sector with "master: off" set in the .O file.
  1067.  
  1068.              Sent from an elevator or trigger.
  1069.  
  1070.              Sent to an elevator (or a normal sector with gens in it).
  1071.  
  1072.  
  1073. Parameters: none
  1074.                 
  1075.  
  1076.  
  1077. master_off
  1078. ---------
  1079. description: Turns an elevator's master off.
  1080.  
  1081.              Sent from an elevator or trigger.
  1082.  
  1083.              Sent to an elevator.
  1084.  
  1085.  
  1086. Parameters: none
  1087.                 
  1088.  
  1089.  
  1090. m_trigger
  1091. ---------
  1092. description: Triggers a trigger.
  1093.              Useful for triggering dummy trigger sectors that display messages 
  1094.              from TEXT.MSG since "text" (see below) can only be sent when a 
  1095.              trigger is triggered.
  1096.  
  1097.              Sent from an elevator.
  1098.  
  1099.              Sent to a line trigger or sector trigger.
  1100.  
  1101.  
  1102. Parameters: none
  1103.  
  1104.  
  1105.  
  1106. clear_bits
  1107. ----------
  1108. description: Clears specified flag bits from a wall or sector. To clear more 
  1109.              than one bit, add the bit values up that you want cleared.
  1110.  
  1111.              Sent from a trigger or elevator.
  1112.  
  1113.              Sent to a sector or line.
  1114.  
  1115.  
  1116. Parameters:
  1117.  
  1118. [flagnum]       --      flag number (1, 2 or 3)
  1119. [num]           --      bit value to clear
  1120.  
  1121.  
  1122.  
  1123.  
  1124. set_bits
  1125. ----------
  1126. description: Sets specified flag bits to a sector or wall. To set more than 
  1127.              one bit, add up the bit values that you want to be set.
  1128.  
  1129.              Sent from a trigger or elevator.
  1130.  
  1131.              Sent to a sector or line.
  1132.  
  1133.  
  1134. Parameters:
  1135.  
  1136. [flagnum]       --      flag number (1, 2 or 3)
  1137. [num]           --      bit value to set
  1138.  
  1139.  
  1140.  
  1141. wakeup
  1142. ------
  1143. description: [NEW] VUEs with "PAUSE: TRUE" will be played once when this 
  1144.              message is sent to the sector containing the 3DO object.
  1145.  
  1146.              Sent from an elevator.
  1147.  
  1148.              Sent to a sector.
  1149.  
  1150.  
  1151. Parameters: none
  1152.  
  1153.  
  1154.  
  1155. [NEW] lights
  1156. ------------
  1157. description: this message will toggle the ambience of ALL sectors in the level
  1158.              between their original setting and the value of sector flag 3. 
  1159.              Using sector flag 3 bits 1, 2, 4, 8, and 16 it is possible to 
  1160.              make any ambient level from 0 to 31.
  1161.  
  1162.              Sent from an elevator or trigger.
  1163.  
  1164.              Sent to the system (treat it like a sector with name "system",
  1165.              but make sure there are NO actual sectors called "system" 
  1166.              anywhere in your level.
  1167.  
  1168.  
  1169. Parameters: none
  1170.  
  1171.  
  1172.  
  1173.  
  1174. 7. MISCELLANEOUS
  1175. ----------------
  1176. Here are some other things that I have come across in INF files.
  1177.  
  1178.  
  1179. Page
  1180. ----
  1181. "Page" plays a sound effect when an elevator arrives at a stop. "Page" is
  1182. placed in an elevator's sequence (between seq and seqend).
  1183.  
  1184. Usage:
  1185.  
  1186. |        page: [stop] [VOC file]
  1187.  
  1188.  
  1189. Text
  1190. ----
  1191. "Text" displays a text message from TEXT.MSG on the top of the screen. Add
  1192. your own messages on the end of TEXT.MSG if you want! Messages are sent by
  1193. triggers when they are triggered. "Text" is placed in a trigger's sequence.
  1194.  
  1195. usage:
  1196.  
  1197. |        text: [text number in text.msg]
  1198.  
  1199.  
  1200. Sound
  1201. -----
  1202. "Sound" replaces the default sound effects of an elevator or switch trigger
  1203. with another VOC file or silence. Most elevators have 3 sound effects -
  1204. leaving a stop, moving between stops, and arriving at a stop. Switches only
  1205. have one sound - when the switch is pressed. "Sound" is placed in an
  1206. elevator's or switch trigger's sequence.
  1207.  
  1208.  
  1209. usage (replacing a sound effect, elevators):
  1210.  
  1211. |        sound: [sound value] [VOC file]
  1212.  
  1213. usage (replacing a sound effect, triggers):
  1214.  
  1215. |        sound: [VOC file]
  1216.  
  1217.  
  1218. usage (replacing a sound effect with silence, elevators):
  1219.  
  1220. |        sound: [sound value] 0
  1221.  
  1222. usage (replacing a sound effect with silence, triggers):
  1223.  
  1224. |        sound: 0
  1225.  
  1226.  
  1227. adjoin
  1228. ------
  1229. "Adjoin" adjoins a line to another line when an elevator arrives at a stop.
  1230. This is required if you need a line to remove its adjoin with one line and 
  1231. adjoin with another line midway through a level. "Adjoin" is placed in an
  1232. elevator's sequence.
  1233.  
  1234. For example, in level 6 (detention center), you may notice that the 2 main
  1235. lifts have a door on each layer adjoined to it on the same line. Since a line
  1236. cannot be adjoined to more than one other line at once, the following occurs:
  1237. midway through moving up between 2 layers, the elevator move_floor arrives at
  1238. a stop which it remains at for 0 seconds. At this stop, a line of the lift
  1239. sector is adjoined to a line of the door sector on the layer above, at the
  1240. same time removing its adjoin with a line of the door sector on the layer
  1241. below. The lift's doors all appear to be directly on top of each other.
  1242.  
  1243. usage:
  1244.  
  1245. | adjoin: [stop] [sector name] [line number] [sector name] [line number]
  1246.  
  1247. ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕ
  1248.  
  1249. That's all folks! If you have anything to add to this file, if you want
  1250. to correct something I have wrong, comment or ask a question, mail me at:
  1251.  
  1252. kokjm@stmichaels.vic.edu.au
  1253.  
  1254. Any additions or corrections will be put in an updated version of this file. 
  1255. Please include your name and e-mail address so that I can credit you.
  1256.  
  1257.  
  1258. May the Force be With You.
  1259.